package cn.iocoder.yudao.module.promotion.fod.service;

import cn.iocoder.yudao.framework.business.basic.service.MemberExtensionService;
import cn.iocoder.yudao.module.api.promotion.fod.enums.FirstOrderDiscountTypeEnum;
import cn.iocoder.yudao.module.promotion.fod.pojo.po.FirstOrderDiscountBase;

/**
 * 平台首单优惠活动 Service 接口
 *
 * @author 山野羡民
 */
interface FirstOrderDiscountInternalService<DO extends FirstOrderDiscountBase> extends MemberExtensionService<DO> {

    /**
     * 检查用户是否符合平台首单优惠资格
     *
     * @param userId 用户编号
     */
    default boolean hasEligibility(Long userId) {
        DO entity = getOrCreate(userId);
        return entity != null && !Boolean.TRUE.equals(entity.getUsed());
    }

    /**
     * 应用折扣
     *
     * @param type 优惠类型
     * @param userId 用户编号
     * @param tradeNo 交易单号
     * @param originalPrice 原价金额
     * @param discountPrice 折扣减免金额
     */
    void applyDiscount(FirstOrderDiscountTypeEnum type, Long userId, String tradeNo, Integer originalPrice, Integer discountPrice);

}
